package com.aco.fatureapp.utilitary;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

public class DataUtils {

	public static final String PATTERN_DATE = "dd/MM/yyyy";

	public static final String PATTERN_DATE_TIME = "dd/MM/yyyy HH:mm";

	public static String formatarCompetencia(final Long competencia) {
		if (competencia != null) {
			final String tmp = competencia.toString();

			final StringBuilder mes = new StringBuilder();
			final StringBuilder ano = new StringBuilder();

			ano.append(tmp.substring(0, 4));
			mes.append(tmp.substring(4, 6));

			return mes + "/" + ano;

		}

		return null;
	}

	public static String dataFormatada(final Long timeInMillis,
			final String pattern) {
		final Calendar data = Calendar.getInstance();

		if (timeInMillis != null) {
			data.setTimeInMillis(timeInMillis);

			final SimpleDateFormat dateFormat = new SimpleDateFormat(pattern,
					new Locale("pt", "BR"));

			return dateFormat.format(data.getTime());
		}
		return null;
	}

	public static int getDiferencaEmDias(final Date dataMaior,
			final Date dataMenor) {
		if (dataMaior == null || dataMenor == null) {
			return 0;
		}

		final Calendar instanceMaior = Calendar.getInstance();
		instanceMaior.setTime(dataMaior);

		final Calendar instanceMenor = Calendar.getInstance();
		instanceMenor.setTime(dataMenor);

		final long timeInMillisMenor = instanceMenor.getTimeInMillis();

		final long timeInMillisMaior = instanceMaior.getTimeInMillis();

		if (timeInMillisMenor > timeInMillisMaior) {
			return 0;
		}

		/*
		 * Necessário para poder calcular a diferença dos dias entre vários
		 * anos.
		 */
		final long retorno = (timeInMillisMaior - timeInMillisMenor)
				/ (24 * 60 * 60 * 1000);

		final Long long1 = Long.valueOf(retorno);

		return long1.intValue();
	}
}
